<template>
	<view class="container">
		<u-navbar back-text="" back-icon-color="#fff" title="证明材料" title-color="#fff" :background="{ background: '#3669f8' }" :custom-back="()=>{
			vk.navigateTo('/pages/catch/item')}"></u-navbar>
		<view class="">
			<text style="color: #2979ff;">单个图片大小不超过1mb</text>
		</view>
		<view class="box" v-for="(item,index) in pageList" :key="item.key">
			<view class="catchTitle">
				<text>{{index+1}}.{{item.name}}</text>
			</view>
			<view class="">
				<text style="color: #888;font-size: 14px;">{{item.remark}}</text>

			</view>

			<view class="uploadView">
				<u-upload :max-size="1 * 1024 * 1024" :ref="item.key" @on-choose-complete="choose($event,item.key)"
					:file-list="fileData[item.key]" :auto-upload="false" @on-oversize="oversize" :header="{
					Authorization:'Bearer ' + vk.getStorageSync('stuToken')
				}"></u-upload>
				<!-- <uni-file-picker mode="grid" :image-styles='{"height":100,"width":100}' :ref="item.key" v-model="fileData[item.key]" title="" limit="9" :auto-upload="true"  file-mediatype="image"></uni-file-picker> -->
			</view>
		</view>

		<view class="sub">
			<button type="primary" @click="subUpload">保存</button>
		</view>
	</view>
</template>

<script>
	import {
		addMaterial,
		getMaterial
	} from "@/api/material.js"
	import {
		getCatchInfo
	} from "@/api/catch.js"
	var that; // 当前页面对象
	var vk; //vk依赖
	export default {
		data() {
			return {
				formData: {

				},
				pageList: [],
				fileData: {

				},
				upList: [{
						name: '脱贫家庭学生',
						isShow: false,
						key: 'tpjt',
						remark: '必须同时上传，脱贫家庭相关证件'
					},
					{
						name: '脱贫不稳定家庭学生',
						isShow: false,
						key: 'tpbwd',
						remark: '必须同时上传，脱贫不稳定家庭相关证件'
					},
					{
						name: '边缘易致贫家庭学生',
						isShow: false,
						key: 'byyzp',
						remark: '必须同时上传，边缘易致贫家庭相关证件'

					},
					{
						name: '突发严重困难户学生',
						isShow: false,
						key: 'tfyz',
						remark: '必须同时上传，突发严重困难户相关证件'
					},
					{
						name: '原广东省户籍建档立卡家庭学生',
						isShow: false,
						key: 'ygdshj',
						remark: '必须同时上传，广东省户籍建档立卡家庭相关证件'
					},
					{
						name: '特困供养人员',
						isShow: false,
						key: 'tkgy',
						remark: '必须上传，广东省特困人员供养证或广东省农村五保供养证书'
					},
					{
						name: '孤儿（事实无人抚养）',
						isShow: false,
						key: 'ge',
						remark: '必须上传，儿童福利证'
					},
					{
						name: '特困职工子女',
						isShow: false,
						key: 'tkzg',
						remark: '必须同时上传，特困职工证'
					},
					{
						name: '最低生活保障户',
						isShow: false,
						key: 'cxzd',
						remark: '必须同时上传，广东省城乡居民最低生活保障证'
					},
					{
						name: '低保边缘、支出型困难家庭学生',
						isShow: false,
						key: 'cxdsr',
						remark: '低保边缘家庭证或支出型困难家庭证'
					},
					{
						name: '享受国家定期抚恤补助的优抚对象（含烈士子女、牺牲军人子女）、因公牺牲警察子女',
						isShow: false,
						key: 'gjdq',
						remark: '必须同时上传，中华人民共和国残疾军人证或优抚对象抚恤补助登记证'
					},
					{
						name: '学生本人残疾',
						isShow: false,
						key: 'brcj',
						remark: '必须上传，残疾人证'
					},
					// {
					// 	name: '学生本人患重大疾病',
					// 	isShow: false,
					// 	key: 'brhzd',
					// 	remark: '必须上传，病历或病情诊断书'
					// },
					{
						name: '父母不能履行抚养义务的儿童',
						isShow: false,
						key: 'bnlx',
						remark: '必须同时上传，相关证件或手写相关情况描述（需含申请人签名和所在居委会或村委会联系电话）'
					},
					{
						name: '父母一方抚养',
						isShow: false,
						key: 'fmyf',
						remark: '必须同时上传，相关证件或手写相关情况描述（需含申请人签名和所在居委会或村委会联系电话）'
					},
					// {
					// 	name: '家庭遭受疫情',
					// 	isShow: false,
					// 	key: 'jtzs',
					// 	remark: '必须同时上传，病历或病情诊断书、户口簿户主首页、户口簿学生本人页'
					// },
					{
						name: '其他',
						isShow: false,
						key: 'other',
						remark: '必须同时上传，相关证件或手写相关情况描述（需含申请人签名和所在居委会或村委会联系电话）'
					},
					{
						name: '赡养老人',
						isShow: false,
						key: 'support',
						remark: '必须上传赡养老人户口页',
					},
					{
						name: '家庭在学人数',
						isShow: false,
						key: 'learns',
						remark: '必须上传学生在校证明'
					},
					{
						name: '学生本人或家庭成员患重大疾病',
						isShow: false,
						key: 'xsbrhj',
						remark: '必须同时上传，病历或病情诊断书'
					},
					// {
					// 	name: '其他家庭成员（不含学生本人）患重大疾病',
					// 	isShow: false,
					// 	key: 'otherFamilyMem',
					// 	remark: '必须同时上传，病历或病情诊断书、户口簿户主首页、户口簿其他家庭成员页、户口簿学生本人页'
					// },
					{
						name: '父母从业情况',
						isShow: false,
						key: 'parEp',
						remark: '必须上传失业证明',
						options: ['父母一方没有工作（不含农村种植户或养殖户）', '父母均没有工作（不含农村种植户或养殖户）']
					},
					// {
					// 	name: '父母文化',
					// 	isShow: false,
					// 	key:'parCul'
					// },
					{
						name: '父母年龄',
						isShow: false,
						key:'parAge'
					},
					{
						name: '父亲为残疾人',
						isShow: false,
						key: 'facj',
						remark: '必须同时上传，残疾人证'
					},
					{
						name: '母亲为残疾人',
						isShow: false,
						key: 'mocj',
						remark: '必须同时上传，残疾人证'
					}, {
						name: '家庭遭受重大自然灾害',
						isShow: false,
						key: 'naturalDisaster',
						remark: '必须同时上传，相关证件或手写相关情况描述（需含申请人签名和所在居委会或村委会联系电话）'
					}, {
						name: '家庭是否遭受重大突发意外',
						isShow: false,
						key: 'suddenAccident',
						remark: '必须同时上传，相关证件或手写相关情况描述（需含申请人签名和所在居委会或村委会联系电话）'
					}, {
						name: '家庭欠债',
						isShow: false,
						key: 'debt',
						remark: '必须上传家庭欠债证明（因病、因灾）'
					},
				]
			}
		},
		onLoad(options) {
			//初始化vk
			that = this;
			vk = that.vk
			that.options = options

			let fileData = {}
			//获取已上传证明材料数据
			getMaterial().then((data) => {
				let [err, res] = data
				if (res.data.data) {
					let yData = res.data.data
					for (let key in yData) {
						try {
							let p = JSON.parse(yData[key])

							if (p.length > 0) {
								fileData[key] = p.map(val => {
									if(val.includes('?')){
										return {url: val+'&x-oss-process=image/resize,h_100,m_lfit'}
									}
									else {
										return {url: val+'?x-oss-process=image/resize,h_100,m_lfit'}
									}
								})
							}
						} catch (e) {

						}
					}
					this.fileData = fileData

				}

			})

			getCatchInfo({
				stuId: this.stuId
			}).then((data) => {
				let [err, res] = data
				if (res.data.code == 200) {
					if (res.data.data) {
						//构建页面
						this.createPageList(res.data.data)
					}
				} else {
					vk.alert(res.data?.msg || err)
				}
			})




		},
		onShow() {

		},
		methods: {
			choose(lists, key){
				// console.log(lists,key)
				for(let i in lists){
					if(lists[i].progress != 100){
						uniCloud.uploadFile({
							filePath:lists[i].file.path,
							cloudPath:lists[i].file.name,
							success:(res)=> {
								
								let url = res.fileID
	
								this.$refs[key][0].lists[i].url = url
	
								delete this.$refs[key][0].lists[i].file
								this.$refs[key][0].lists[i].progress = 100
								URL.revokeObjectURL(this.$refs[key][0].lists[i].url)
								
							},
						})
					}
				}
			},
			
			oversize(file, lists, name) {
				console.log(file, lists, name)
			},
			more() {

			},
			// 创建页面数据
			createPageList(data) {
				let catchData = data
				let tmp = {}
				// 遍历获取家庭采集信息,判断是否填写
				for (let i in catchData) {
					if (catchData[i]) {
						tmp[i] = catchData[i]
					}
				}


				// 获取已填写字段key
				let catchKeys = Object.keys(tmp)
				//upList为需提供证明材料数组，catchKeys为已填写字段，循环判断uplist key 与 catchKeys相同
				//合成新数组。作为新数组for渲染数据
				for (let v1 in this.upList) {

					// 初始化formData属性
					this.formData[this.upList[v1].key] = JSON.stringify([])

					for (let v2 in catchKeys) {

						if (this.upList[v1].key == catchKeys[v2]) {

							//判断是否有子选项
							if (this.upList[v1].options) {
								if (this.upList[v1].options.includes(tmp[catchKeys[v2]])) {
									this.pageList.push({
										name: tmp[catchKeys[v2]],
										key: 'parEp',
										remark: this.upList[v1].remark,
									})
								}

							}
							// 没有子选项正常添加
							else {
								this.pageList.push(this.upList[v1])
							}


						}
					}
				}
			},
			upChange(key, lists, name) {
				// this.formData[key] = lists
			},
			subUpload() {

				let files = {};
				// ref引用
				let ref = this.$refs
				let upFail = []
				let isPer = true
				for (let r in ref) {

					if (ref[r][0].lists.length == 0) {
						isPer = false
					}
					let arrTmp = []
					let arrUp = []
					// r为当前所需证明材料key
					
					for (let fs = 0; fs < ref[r][0].lists.length; fs++) {
						let val = ref[r][0].lists[fs]
						console.log(val)
						if (!!val.file && !val.response) {
							vk.toast('材料未上传完毕，请稍后', 'none');
							upFail.push(r)
							return null
						}
						val.url = val.url.replaceAll('?x-oss-process=image/resize,h_100,m_lfit','')
						val.url =  val.url.replaceAll('&x-oss-process=image/resize,h_100,m_lfit','')
						let arr = {
							url: val.url
						}
						arrTmp.push(val.url)
						arrUp.push(arr)

					}
					files[r] = arrUp

					this.formData[r] = JSON.stringify(arrTmp)


				}

				// 判断父母从业情况值

				if (upFail.length != 0) {

					return
				}

				if (isPer) {
					addMaterial(this.formData).then((data) => {
						let [err, res] = data
						if (res.data.code == 200) {

							vk.setVuex('$app.catchUpload', true)
							vk.setVuex('$app.isSubmit', true)
							// uni.setStorageSync('uploadList',files)

							vk.toast('保存成功', 'success', 800);
							setTimeout(() => {
								vk.redirectTo('/pages/catch/item');
							}, 810)
						} else {
							vk.alert(res.data.msg || err);
						}
					})
				} else {
					vk.confirm("证明材料未完善，是否保存？", (res) => {
						if (res.confirm) {
							// 点击确定按钮后的回调

							addMaterial(this.formData).then((data) => {
								let [err, res] = data
								if (res.data.code == 200) {
									vk.setVuex('$app.catchUpload', false)
									vk.setVuex('$app.isSubmit', true)
									// uni.setStorageSync('uploadList',files)

									vk.toast('保存成功', 'success', 800);
									setTimeout(() => {
										vk.navigateBack();
									}, 810)
								} else {
									vk.alert(res.data.msg || err);
								}
							})

						}
					});
					return
				}
			}
		}
	}
</script>

<style scoped lang="scss">
	.container {
		padding: 20rpx;

		.catchTitle {
			font-weight: 700;
			font-size: 18px;
		}

		.sub {
			margin-top: 50rpx;
		}
	}
</style>